声明 模块 "url" {

    //@@{ 解析的URL查询_:ParsedUrlQuery, 解析的URL查询输入_:ParsedUrlQueryInput }
    导入 { 解析的URL查询_, 解析的URL查询输入_ } 来自 "querystring";

    //@@{ URL对象公用_:UrlObjectCommon }
    接口 URL对象公用_ {

        //@@{ 身份验证:auth }
        身份验证?: 文字;

        //@@{ 哈希:hash }
        哈希?: 文字;

        //@@{ 主机:host }
        主机?: 文字;

        //@@{ 主机名:hostname }
        主机名?: 文字;

        //@@{ URL文本:href }
        URL文本?: 文字;

        //@@{ 路径:path }
        路径?: 文字;

        //@@{ 路径名:pathname }
        路径名?: 文字;

        //@@{ 协议:protocol }
        协议?: 文字;

        //@@{ 搜索:search }
        搜索?: 文字;

        //@@{ 斜杠:slashes }
        斜杠?: 真假;
    }

    // Input to `url.format`

    //@@{ Url对象_:UrlObject, URL对象公用_:UrlObjectCommon }
    接口 Url对象_ 扩展 URL对象公用_ {

        //@@{ 端口:port }
        端口?: 文字 | 数字;

        //@@{ 查询:query, 解析的URL查询输入_:ParsedUrlQueryInput }
        查询?: 文字 | 空值 | 解析的URL查询输入_;
    }

    // Output of `url.parse`

    //@@{ URL对象公用_:UrlObjectCommon }
    接口 Url 扩展 URL对象公用_ {

        //@@{ 端口:port }
        端口?: 文字;

        //@@{ 查询:query, 解析的URL查询_:ParsedUrlQuery }
        查询?: 文字 | 空值 | 解析的URL查询_;
    }

    //@@{ Url包括解析查询_:UrlWithParsedQuery }
    接口 Url包括解析查询_ 扩展 Url {

        //@@{ 查询:query, 解析的URL查询_:ParsedUrlQuery }
        查询: 解析的URL查询_;
    }

    //@@{ Url包括字符串查询_:UrlWithStringQuery }
    接口 Url包括字符串查询_ 扩展 Url {

        //@@{ 查询:query }
        查询: 文字 | 空值;
    }

    //@@{ 解析:parse, Url包括字符串查询_:UrlWithStringQuery }
    函数 解析(url字符串: 文字): Url包括字符串查询_;

    //@@{ 解析:parse, Url包括字符串查询_:UrlWithStringQuery }
    函数 解析(url字符串: 文字, 编译查询字符串: 为假 | 未定, 斜杠表示主机?: 真假): Url包括字符串查询_;

    //@@{ 解析:parse, Url包括解析查询_:UrlWithParsedQuery }
    函数 解析(url字符串: 文字, 编译查询字符串: 为真, 斜杠表示主机?: 真假): Url包括解析查询_;

    //@@{ 解析:parse }
    函数 解析(url字符串: 文字, 编译查询字符串: 真假, 斜杠表示主机?: 真假): Url;

    //@@{ 格式化:format, URL格式化选项_:URLFormatOptions }
    函数 格式化(URL: URL, 选项组?: URL格式化选项_): 文字;

    //@@{ 格式化:format, Url对象_:UrlObject }
    函数 格式化(url对象: Url对象_ | 文字): 文字;

    //@@{ 解决:resolve }
    函数 解决(从: 文字, 到: 文字): 文字;

    //@@{ 域到ASCII:domainToASCII }
    函数 域到ASCII(领域: 文字): 文字;

    //@@{ 域到Unicode:domainToUnicode }
    函数 域到Unicode(领域: 文字): 文字;

    /**
     * This function ensures the correct decodings of percent-encoded characters as
     * well as ensuring a cross-platform valid absolute path string.
     * @param url The file URL string or URL object to convert to a path.
     */

    //@@{ 文件网址通向路径:fileURLToPath }
    函数 文件网址通向路径(url: 文字 | URL): 文字;

    /**
     * This function ensures that path is resolved absolutely, and that the URL
     * control characters are correctly encoded when converting into a File URL.
     * @param url The path to convert to a File URL.
     */

    //@@{ 路径到文件URL:pathToFileURL }
    函数 路径到文件URL(url: 文字): URL;

    //@@{ URL格式化选项_:URLFormatOptions }
    接口 URL格式化选项_ {

        //@@{ 身份验证:auth }
        身份验证?: 真假;

        //@@{ 片段:fragment }
        片段?: 真假;

        //@@{ 搜索:search }
        搜索?: 真假;

        //@@{ 统一码:unicode }
        统一码?: 真假;
    }

    类别 URL {
        构造(输入: 文字, 基?: 文字 | URL);

        //@@{ 哈希:hash }
        哈希: 文字;

        //@@{ 主机:host }
        主机: 文字;

        //@@{ 主机名:hostname }
        主机名: 文字;

        //@@{ URL文本:href }
        URL文本: 文字;

        //@@{ 起点:origin }
        只读 起点: 文字;

        //@@{ 密码:password }
        密码: 文字;

        //@@{ 路径名:pathname }
        路径名: 文字;

        //@@{ 端口:port }
        端口: 文字;

        //@@{ 协议:protocol }
        协议: 文字;

        //@@{ 搜索:search }
        搜索: 文字;

        //@@{ 搜索参数组:searchParams, URL搜索参数组_:URLSearchParams }
        只读 搜索参数组: URL搜索参数组_;

        //@@{ 用户名:username }
        用户名: 文字;

        //@@{ 转为文字:toString }
        转为文字(): 文字;

        //@@{ 转为JSON:toJSON }
        转为JSON(): 文字;
    }

    //@@{ URL搜索参数组_:URLSearchParams, 可迭代_:Iterable }
    类别 URL搜索参数组_ 实现 可迭代_<[文字, 文字]> {

        //@@{ URL搜索参数组_:URLSearchParams, 可迭代_:Iterable, 数组_:Array }
        构造(初始化?: URL搜索参数组_ | 文字 | { [key: 文字]: 文字 | 文字[] | 未定 } | 可迭代_<[文字, 文字]> | 数组_<[文字, 文字]>);

        //@@{ 附加:append }
        附加(名称: 文字, 值: 文字): 无值;

        //@@{ 删除:delete }
        删除(名称: 文字): 无值;

        //@@{ 条目:entries, 可迭代迭代器_:IterableIterator }
        条目(): 可迭代迭代器_<[文字, 文字]>;

        //@@{ 循环执行:forEach }
        循环执行(回调: (值: 文字, 名称: 文字, 搜索参数组: 本体) => 无值): 无值;

        //@@{ 获取:get }
        获取(名称: 文字): 文字 | 空值;

        //@@{ 获取全部:getAll }
        获取全部(名称: 文字): 文字[];

        //@@{ 具有:has }
        具有(名称: 文字): 真假;

        //@@{ 键组:keys, 可迭代迭代器_:IterableIterator }
        键组(): 可迭代迭代器_<文字>;

        //@@{ 设置:set }
        设置(名称: 文字, 值: 文字): 无值;

        //@@{ 排序:sort }
        排序(): 无值;

        //@@{ 转为文字:toString }
        转为文字(): 文字;

        //@@{ 值组:values, 可迭代迭代器_:IterableIterator }
        值组(): 可迭代迭代器_<文字>;

        //@@{ 符号_:Symbol, 迭代器:iterator, 可迭代迭代器_:IterableIterator }
        [符号_.迭代器](): 可迭代迭代器_<[文字, 文字]>;
    }
}
